﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Web.Security;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using System.Data;

using System.IO;
using System.Text;

public partial class _Default : System.Web.UI.Page
{
    ConexaoROBOT Command = new ConexaoROBOT();
    PopulaListBox PopulaLSB = new PopulaListBox();
    PopulaDropDownList PopulaDDL = new PopulaDropDownList();
    CAI CAIOPS = new CAI();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["ses_login_validado"] == "S")
            {
                Session["ses_ambiente"] = rbl_ambiente.SelectedValue.ToString();
                tb_cai.ActiveTabIndex = 0;

                PopulaTabAtiva(0);

                hdf_cod_grup.Value = "0";
                hdf_cod_schm.Value = "0";
                hdf_cod_usua.Value = "0";
                hdf_log.Value = "0";
                Session["ses_resultado_busca"] = null;
            }
            else
            {
                Response.Redirect("LoginCAI.aspx");
            }
        }
    }

    protected void rbl_ambiente_TextChanged(object sender, EventArgs e)
    {
        Session["ses_ambiente"] = rbl_ambiente.SelectedValue.ToString();
        LimparTudo();
        PopulaTabAtiva(tb_cai.ActiveTabIndex);

        switch (rbl_ambiente.SelectedValue)
        {
            case "DEV":
                pn_ambiente.BackColor = System.Drawing.Color.Orange;
                break;

            case "INT":
                pn_ambiente.BackColor = System.Drawing.Color.LightGreen;
                break;

            case "ACE":
                pn_ambiente.BackColor = System.Drawing.Color.Cyan;
                break;
        }
    }

    protected void Popula_lsb_grupo()
    {
        PopulaLSB.dsResultado("PACK_APP_POPULA_LSB.PROC_APP_POPULA_LSB_COD_GRUP", lsb_grupo, "COD_GRUP", "NOME_GRUP", null);
    }

    protected void Popula_lsb_usuario()
    {
        PopulaLSB.dsResultado("PACK_APP_POPULA_LSB.PROC_APP_POPULA_LSB_COD_USUA", lsb_usuario, "COD_USUA", "NOME_LOGN", null);
    }

    protected void Popula_ddl_cod_schm()
    {
        PopulaDDL.dsResultado("PACK_APP_POPULA_LSB.PROC_APP_POPULA_DDL_COD_SCHM", ddl_cod_schm, "COD_SCHM", "NOME_SCHM", null);
    }

    protected void lsb_grupo_SelectedIndexChanged(object sender, EventArgs e)
    {
        String[] Grupo = lsb_grupo.SelectedValue.ToString().Split(new Char[] { ';' });

        hdf_cod_grup.Value = Grupo[0];
        txt_nome_grup.Text = Grupo[1];
        ddl_cod_schm.SelectedValue = Grupo[2];
        hdf_cod_schm.Value = ddl_cod_schm.SelectedValue.ToString();
        txt_nome_schm.Text = ddl_cod_schm.SelectedItem.Text;

        PopulaLSB.dsResultado("PACK_APP_POPULA_LSB.PROC_APP_POPULA_LSB_COD_USUA_D", lsb_usuario_grupo, "COD_USUA", "NOME_LOGN", hdf_cod_grup.Value);
        PopulaLSB.dsResultado("PACK_APP_POPULA_LSB.PROC_APP_POPULA_LSB_COD_USUA_F", lsb_usuario_fora_grupo, "COD_USUA", "NOME_LOGN", hdf_cod_grup.Value);
    }

    protected void ddl_cod_schm_SelectedIndexChanged(object sender, EventArgs e)
    {
        hdf_cod_schm.Value = ddl_cod_schm.SelectedValue.ToString();
        txt_nome_schm.Text = ddl_cod_schm.SelectedItem.Text;
    }

    protected void lbtn_adicionar_usuario_Command(object sender, CommandEventArgs e)
    {
        SalvarUsuarioGrupo(Int32.Parse(lsb_usuario_fora_grupo.SelectedValue), Int32.Parse(hdf_cod_grup.Value), "I");

        AdicionaItemListBox(lsb_usuario_grupo, lsb_usuario_fora_grupo);
    }

    protected void lbtn_adicionar_usuario_todos_Command(object sender, CommandEventArgs e)
    {
        foreach (ListItem Item in lsb_usuario_fora_grupo.Items)
        {
            Item.Selected = true;

            SalvarUsuarioGrupo(Int32.Parse(Item.Value), Int32.Parse(hdf_cod_grup.Value), "I");
        }

        AdicionaItemListBox(lsb_usuario_grupo, lsb_usuario_fora_grupo);
    }

    protected void lbtn_excluir_usuario_Command(object sender, CommandEventArgs e)
    {
        SalvarUsuarioGrupo(Int32.Parse(lsb_usuario_grupo.SelectedValue), Int32.Parse(hdf_cod_grup.Value), "D");

        AdicionaItemListBox(lsb_usuario_fora_grupo, lsb_usuario_grupo);
    }

    protected void lbtn_excluir_usuario_todos_Command(object sender, CommandEventArgs e)
    {
        foreach (ListItem Item in lsb_usuario_grupo.Items)
        {
            Item.Selected = true;

            SalvarUsuarioGrupo(Int32.Parse(Item.Value), Int32.Parse(hdf_cod_grup.Value), "D");
        }

        AdicionaItemListBox(lsb_usuario_fora_grupo, lsb_usuario_grupo);
    }

    protected void lbtn_adicionar_grupo_Command(object sender, CommandEventArgs e)
    {
        SalvarUsuarioGrupo(Int32.Parse(hdf_cod_usua.Value), Int32.Parse(lsb_grupo_nao_participa.SelectedValue), "I");

        AdicionaItemListBox(lsb_grupo_participa, lsb_grupo_nao_participa);
    }

    protected void lbtn_adicionar_grupo_todos_Command(object sender, CommandEventArgs e)
    {
        foreach (ListItem Item in lsb_grupo_nao_participa.Items)
        {
            Item.Selected = true;

            SalvarUsuarioGrupo(Int32.Parse(hdf_cod_usua.Value), Int32.Parse(Item.Value), "I");
        }

        AdicionaItemListBox(lsb_grupo_participa, lsb_grupo_nao_participa);
    }

    protected void lbtn_excluir_grupo_Command(object sender, CommandEventArgs e)
    {
        SalvarUsuarioGrupo(Int32.Parse(hdf_cod_usua.Value), Int32.Parse(lsb_grupo_participa.SelectedValue), "D");

        AdicionaItemListBox(lsb_grupo_nao_participa, lsb_grupo_participa);
    }

    protected void lbtn_excluir_grupo_todos_Command(object sender, CommandEventArgs e)
    {
        foreach (ListItem Item in lsb_grupo_participa.Items)
        {
            Item.Selected = true;

            SalvarUsuarioGrupo(Int32.Parse(hdf_cod_usua.Value), Int32.Parse(Item.Value), "D");
        }

        AdicionaItemListBox(lsb_grupo_nao_participa, lsb_grupo_participa);
    }

    protected void AdicionaItemListBox(ListBox Adiciona, ListBox Exclui)
    {
        ListBox Selecionado = new ListBox();

        foreach (ListItem Item in Exclui.Items)
        {
            if (Item.Selected == true)
            {
                Selecionado.Items.Add(Item);
            }
        }

        foreach (ListItem Item in Selecionado.Items)
        {
            Adiciona.Items.Add(Item);
            Exclui.Items.Remove(Item);
        }

        Adiciona.ClearSelection();
        Exclui.ClearSelection();
    }

    protected void btn_novo_grupo_Command(object sender, CommandEventArgs e)
    {
        hdf_cod_grup.Value = "0";
        txt_nome_grup.Text = "";
        ddl_cod_schm.SelectedValue = "0";
        hdf_cod_schm.Value = "0";
        txt_nome_schm.Text = "";
        lbl_mensagem_grupo.Text = "";
        lsb_grupo.ClearSelection();
        lsb_usuario_grupo.Items.Clear();
        lsb_usuario_fora_grupo.Items.Clear();
        txt_nome_grup.Focus();
    }

    protected void btn_novo_schema_Command(object sender, CommandEventArgs e)
    {
        ddl_cod_schm.SelectedValue = "0";
        hdf_cod_schm.Value = "";
        txt_nome_schm.Text = "";
        txt_nome_schm.Focus();
    }

    protected void btn_novo_usuario_Command(object sender, CommandEventArgs e)
    {
        hdf_cod_usua.Value = "0";
        txt_nome_usua.Text = "";
        txt_nome_logn.Text = "";
        lbl_mensagem_usua.Text = "";
        lsb_usuario.ClearSelection();
        lsb_grupo_participa.Items.Clear();
        lsb_grupo_nao_participa.Items.Clear();
        txt_nome_usua.Focus();
    }

    protected void btn_salvar_usuario_Command(object sender, CommandEventArgs e)
    {
        String Resultado = CAIOPS.GravaUsuario(Int32.Parse(hdf_cod_usua.Value), txt_nome_logn.Text, txt_nome_usua.Text, (hdf_cod_usua.Value == "0" || hdf_cod_usua.Value == "") ? "I" : "U");

        lsb_grupo_participa.Items.Clear();
        lsb_grupo_nao_participa.Items.Clear();
        Popula_lsb_usuario();

        LabelMensagem(lbl_mensagem_usua, Resultado);
    }

    protected void btn_excluir_usuario_Command(object sender, CommandEventArgs e)
    {
        String Resultado = CAIOPS.GravaUsuario(Int32.Parse(hdf_cod_usua.Value), txt_nome_logn.Text, txt_nome_usua.Text, "D");

        lsb_grupo_participa.Items.Clear();
        lsb_grupo_nao_participa.Items.Clear();

        hdf_cod_usua.Value = "0";
        txt_nome_usua.Text = "";
        txt_nome_logn.Text = "";
        Popula_lsb_usuario();

        LabelMensagem(lbl_mensagem_usua, Resultado);
    }

    protected void lsb_usuario_SelectedIndexChanged(object sender, EventArgs e)
    {
        String[] Usuario = lsb_usuario.SelectedValue.ToString().Split(new Char[] { ';' });

        hdf_cod_usua.Value = Usuario[0];
        txt_nome_usua.Text = Usuario[1];
        txt_nome_logn.Text = Usuario[2];

        PopulaLSB.dsResultado("PACK_APP_POPULA_LSB.PROC_APP_POPULA_LSB_COD_GRUP_D", lsb_grupo_participa, "COD_GRUP", "NOME_GRUP", hdf_cod_usua.Value);
        PopulaLSB.dsResultado("PACK_APP_POPULA_LSB.PROC_APP_POPULA_LSB_COD_GRUP_F", lsb_grupo_nao_participa, "COD_GRUP", "NOME_GRUP", hdf_cod_usua.Value);
    }

    protected void btn_salvar_grupo_Command(object sender, CommandEventArgs e)
    {
        String Resultado = CAIOPS.GravaGrupo(Int32.Parse(hdf_cod_grup.Value), txt_nome_grup.Text, Int32.Parse(ddl_cod_schm.SelectedValue), (hdf_cod_grup.Value == "0" || hdf_cod_grup.Value == "") ? "I" : "U");

        hdf_cod_grup.Value = "0";
        txt_nome_grup.Text = "";
        ddl_cod_schm.SelectedValue = "0";
        hdf_cod_schm.Value = "";
        txt_nome_schm.Text = "";
        lbl_mensagem_grupo.Text = "";
        lsb_grupo.ClearSelection();
        lsb_usuario_grupo.Items.Clear();
        lsb_usuario_fora_grupo.Items.Clear();
        txt_nome_grup.Focus();
        Popula_lsb_grupo();

        LabelMensagem(lbl_mensagem_grupo, Resultado);
    }

    protected void btn_excluir_grupo_Command(object sender, CommandEventArgs e)
    {
        if (hdf_cod_grup.Value != "0" && hdf_cod_grup.Value != "")
        {
            String GravaGrupo = CAIOPS.GravaGrupo(Int32.Parse(hdf_cod_grup.Value), txt_nome_grup.Text, Int32.Parse(ddl_cod_schm.SelectedValue), "D");

            hdf_cod_grup.Value = "0";
            txt_nome_grup.Text = "";
            ddl_cod_schm.SelectedValue = "0";
            hdf_cod_schm.Value = "";
            txt_nome_schm.Text = "";
            lbl_mensagem_grupo.Text = "";
            lsb_grupo.ClearSelection();
            lsb_usuario_grupo.Items.Clear();
            lsb_usuario_fora_grupo.Items.Clear();
            txt_nome_grup.Focus();
            Popula_lsb_grupo();

            LabelMensagem(lbl_mensagem_grupo, GravaGrupo);
        }
    }

    protected void btn_salvar_schema_Command(object sender, CommandEventArgs e)
    {
        String Resultado = CAIOPS.GravaSchema(Int32.Parse(ddl_cod_schm.SelectedValue), txt_nome_schm.Text, ddl_cod_schm.SelectedValue == "0" ? "I" : "U");

        Popula_ddl_cod_schm();
        ddl_cod_schm.SelectedValue = "0";
        txt_nome_schm.Text = "";

        LabelMensagem(lbl_mensagem_grupo, Resultado);
    }

    protected void SalvarUsuarioGrupo(Int32 COD_USUA, Int32 COD_GRUP, String COD_OPER)
    {
        String Resultado = CAIOPS.GravaUsuarioGrupo(COD_USUA, COD_GRUP, COD_OPER);

        LabelMensagem(lbl_mensagem_grupo, Resultado);
    }

    protected void tb_cai_ActiveTabChanged(object sender, EventArgs e)
    {
        PopulaTabAtiva(tb_cai.ActiveTabIndex);
    }

    protected void ddl_cod_grup_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddl_cod_grup.SelectedValue != "0")
        {
            Popula_gdv_permissao(Int32.Parse(ddl_cod_grup.SelectedValue));
        }
    }

    protected void Popula_gdv_permissao(Int32 COD_GRUP)
    {
        DataSet dsPermissao = new DataSet();

        dsPermissao = CAIOPS.dsPermissao("PACK_APP_CAI.PROC_APP_CAI_GDV_PERM", COD_GRUP);

        //gdv_permissao.AllowPaging = true;
        //gdv_permissao.PageSize = 20;

        gdv_permissao.DataSource = dsPermissao.Tables["Resultado"];
        gdv_permissao.DataBind();

        if (gdv_permissao.Rows.Count > 0)
        {
            gdv_permissao.HeaderRow.Cells[1].Visible = false;
            gdv_permissao.HeaderRow.Cells[2].Visible = false;
            gdv_permissao.HeaderRow.Cells[3].Visible = false;
            gdv_permissao.HeaderRow.Cells[4].Visible = false;
            gdv_permissao.HeaderRow.Cells[5].Visible = false;
            gdv_permissao.HeaderRow.Cells[6].Visible = false;
            gdv_permissao.HeaderRow.Cells[7].Visible = false;
            gdv_permissao.HeaderRow.Cells[8].Visible = false;

            foreach (GridViewRow gvr_permissao in gdv_permissao.Rows)
            {
                gvr_permissao.Cells[1].Visible = false;
                gvr_permissao.Cells[2].Visible = false;
                gvr_permissao.Cells[3].Visible = false;
                gvr_permissao.Cells[4].Visible = false;
                gvr_permissao.Cells[5].Visible = false;
                gvr_permissao.Cells[6].Visible = false;
                gvr_permissao.Cells[7].Visible = false;
                gvr_permissao.Cells[8].Visible = false;
            }
        }
    }

    protected void rbl_tipo_log_SelectedIndexChanged(object sender, EventArgs e)
    {
        hdf_log.Value = "0";
        TrataParametrosLog(rbl_tipo_log.SelectedValue, txt_dat_inicio.Text, txt_dat_fim.Text, ddl_cod_usua.SelectedValue, ddl_cod_schm_pesq.SelectedItem.Text);
    }

    protected void txt_dat_inicio_TextChanged(object sender, EventArgs e)
    {
        hdf_log.Value = "0";
        TrataParametrosLog(rbl_tipo_log.SelectedValue, txt_dat_inicio.Text, txt_dat_fim.Text, ddl_cod_usua.SelectedValue, ddl_cod_schm_pesq.SelectedItem.Text);
    }

    protected void txt_dat_fim_TextChanged(object sender, EventArgs e)
    {
        hdf_log.Value = "0";
        TrataParametrosLog(rbl_tipo_log.SelectedValue, txt_dat_inicio.Text, txt_dat_fim.Text, ddl_cod_usua.SelectedValue, ddl_cod_schm_pesq.SelectedItem.Text);
    }

    protected void ddl_cod_usua_SelectedIndexChanged(object sender, EventArgs e)
    {
        hdf_log.Value = "0";
        TrataParametrosLog(rbl_tipo_log.SelectedValue, txt_dat_inicio.Text, txt_dat_fim.Text, ddl_cod_usua.SelectedValue, ddl_cod_schm_pesq.SelectedItem.Text);
    }

    protected void ddl_cod_schm_pesq_SelectedIndexChanged(object sender, EventArgs e)
    {
        hdf_log.Value = "0";
        TrataParametrosLog(rbl_tipo_log.SelectedValue, txt_dat_inicio.Text, txt_dat_fim.Text, ddl_cod_usua.SelectedValue, ddl_cod_schm_pesq.SelectedItem.Text);
    }

    protected void TrataParametrosLog(String TipoDeLog, String DATA_INIC, String DATA_FIM, String NOME_LOGN, String NOME_SCHM)
    {
        Popula_gdv_log(TipoDeLog, DateTime.Parse(DATA_INIC.Replace("__/__/____", "") == "" ? "01/01/2011" : DATA_INIC), DateTime.Parse(DATA_FIM.Replace("__/__/____", "") == "" ? "31/12/2030" : DATA_FIM), NOME_LOGN == "X" ? null : NOME_LOGN, ddl_cod_schm_pesq.SelectedValue == "0" ? null : NOME_SCHM);
    }

    protected void Popula_gdv_log(String TipoDeLog, DateTime DATA_INIC, DateTime DATA_FIM, String NOME_LOGN, String NOME_SCHM)
    {
        DataSet dsLog = new DataSet();

        if (hdf_log.Value == "0")
        {
            DATA_FIM = DATA_FIM.AddDays(1);
            dsLog = TipoDeLog == "L" ? CAIOPS.dsLog("PACK_APP_CAI.PROC_APP_CAI_GDV_LOG_LOGN", DATA_INIC, DATA_FIM, NOME_LOGN, NOME_SCHM) : CAIOPS.dsLog("PACK_APP_CAI.PROC_APP_CAI_GDV_LOG_DDL", DATA_INIC, DATA_FIM, NOME_LOGN, NOME_SCHM);
            Session["ses_resultado_busca"] = dsLog;
            hdf_log.Value = "1";
            gdv_log.PageIndex = 0;
        }
        else
        {
            dsLog = (DataSet)Session["ses_resultado_busca"];
        }

        gdv_log.AllowPaging = true;
        gdv_log.PageSize = 15;

        gdv_log.DataSource = dsLog.Tables["Resultado"];
        gdv_log.DataBind();
    }

    protected void gdv_log_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='Yellow'");

            if (e.Row.RowIndex % 2 != 0)
            {
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='LightGrey'");
            }
            else
            {
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='WhiteSmoke'");
            }
        }
    }

    protected void gdv_log_PageIndexChanged(object sender, EventArgs e)
    {
        TrataParametrosLog(rbl_tipo_log.SelectedValue, txt_dat_inicio.Text, txt_dat_fim.Text, ddl_cod_usua.SelectedValue, ddl_cod_schm_pesq.SelectedItem.Text);
    }

    protected void gdv_log_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gdv_log.PageIndex = e.NewPageIndex;
    }

    protected void gdv_permissao_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            CheckBox chk_p_create = (CheckBox)e.Row.Cells[9].FindControl("chk_p_create");
            chk_p_create.Checked = e.Row.Cells[1].Text == "S" ? true : false;
            chk_p_create.Enabled = e.Row.Cells[1].Text == "X" ? false : true;

            CheckBox chk_p_alter = (CheckBox)e.Row.Cells[10].FindControl("chk_p_alter");
            chk_p_alter.Checked = e.Row.Cells[2].Text == "S" ? true : false;
            chk_p_alter.Enabled = e.Row.Cells[2].Text == "X" ? false : true;

            CheckBox chk_p_drop = (CheckBox)e.Row.Cells[11].FindControl("chk_p_drop");
            chk_p_drop.Checked = e.Row.Cells[3].Text == "S" ? true : false;
            chk_p_drop.Enabled = e.Row.Cells[3].Text == "X" ? false : true;

            CheckBox chk_p_rename = (CheckBox)e.Row.Cells[12].FindControl("chk_p_rename");
            chk_p_rename.Checked = e.Row.Cells[4].Text == "S" ? true : false;
            chk_p_rename.Enabled = e.Row.Cells[4].Text == "X" ? false : true;

            CheckBox chk_p_comment = (CheckBox)e.Row.Cells[13].FindControl("chk_p_comment");
            chk_p_comment.Checked = e.Row.Cells[5].Text == "S" ? true : false;
            chk_p_comment.Enabled = e.Row.Cells[5].Text == "X" ? false : true;

            CheckBox chk_p_analyze = (CheckBox)e.Row.Cells[14].FindControl("chk_p_analyze");
            chk_p_analyze.Checked = e.Row.Cells[6].Text == "S" ? true : false;
            chk_p_analyze.Enabled = e.Row.Cells[6].Text == "X" ? false : true;

            CheckBox chk_p_grant = (CheckBox)e.Row.Cells[15].FindControl("chk_p_grant");
            chk_p_grant.Checked = e.Row.Cells[7].Text == "S" ? true : false;
            chk_p_grant.Enabled = e.Row.Cells[7].Text == "X" ? false : true;

            CheckBox chk_p_revoke = (CheckBox)e.Row.Cells[16].FindControl("chk_p_revoke");
            chk_p_revoke.Checked = e.Row.Cells[8].Text == "S" ? true : false;
            chk_p_revoke.Enabled = e.Row.Cells[8].Text == "X" ? false : true;

            ImageButton ibtn_salvar = (ImageButton)e.Row.Cells[17].FindControl("ibtn_salvar");

            ibtn_salvar.CommandName = "Salvar";
            ibtn_salvar.CommandArgument = e.Row.RowIndex.ToString();

            e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='Yellow'");

            if (e.Row.RowIndex % 2 != 0)
            {
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='LightGrey'");
            }
            else
            {
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='WhiteSmoke'");
            }
        }
    }

    protected void gdv_permissao_RowCommand(object sender, GridViewCommandEventArgs e)
    {

    }

    protected void SalvarPermissao(Int32 i)
    {
        String Resultado = "X";

        CheckBox chk_p_create = (CheckBox)gdv_permissao.Rows[i].Cells[9].FindControl("chk_p_create");
        Resultado = chk_p_create.Enabled == true ? gdv_permissao.Rows[i].Cells[1].Text != (chk_p_create.Checked == true ? "S" : "N") ? CAIOPS.GravaPermissao(Int32.Parse(ddl_cod_grup.SelectedValue.ToString()), gdv_permissao.Rows[i].Cells[0].Text, "CREATE", chk_p_create.Checked == true ? "G" : "R") : "X" : "X";

        CheckBox chk_p_alter = (CheckBox)gdv_permissao.Rows[i].Cells[10].FindControl("chk_p_alter");
        Resultado = chk_p_alter.Enabled == true ? gdv_permissao.Rows[i].Cells[2].Text != (chk_p_alter.Checked == true ? "S" : "N") ? CAIOPS.GravaPermissao(Int32.Parse(ddl_cod_grup.SelectedValue.ToString()), gdv_permissao.Rows[i].Cells[0].Text, "ALTER", chk_p_alter.Checked == true ? "G" : "R") : "X" : "X";

        CheckBox chk_p_drop = (CheckBox)gdv_permissao.Rows[i].Cells[11].FindControl("chk_p_drop");
        Resultado = chk_p_drop.Enabled == true ? gdv_permissao.Rows[i].Cells[3].Text != (chk_p_drop.Checked == true ? "S" : "N") ? CAIOPS.GravaPermissao(Int32.Parse(ddl_cod_grup.SelectedValue.ToString()), gdv_permissao.Rows[i].Cells[0].Text, "DROP", chk_p_drop.Checked == true ? "G" : "R") : "X" : "X";

        CheckBox chk_p_rename = (CheckBox)gdv_permissao.Rows[i].Cells[12].FindControl("chk_p_rename");
        Resultado = chk_p_rename.Enabled == true ? gdv_permissao.Rows[i].Cells[4].Text != (chk_p_rename.Checked == true ? "S" : "N") ? CAIOPS.GravaPermissao(Int32.Parse(ddl_cod_grup.SelectedValue.ToString()), gdv_permissao.Rows[i].Cells[0].Text, "RENAME", chk_p_rename.Checked == true ? "G" : "R") : "X" : "X";

        CheckBox chk_p_comment = (CheckBox)gdv_permissao.Rows[i].Cells[13].FindControl("chk_p_comment");
        Resultado = chk_p_comment.Enabled == true ? gdv_permissao.Rows[i].Cells[5].Text != (chk_p_comment.Checked == true ? "S" : "N") ? CAIOPS.GravaPermissao(Int32.Parse(ddl_cod_grup.SelectedValue.ToString()), gdv_permissao.Rows[i].Cells[0].Text, "COMMENT", chk_p_comment.Checked == true ? "G" : "R") : "X" : "X";

        CheckBox chk_p_analyze = (CheckBox)gdv_permissao.Rows[i].Cells[14].FindControl("chk_p_analyze");
        Resultado = chk_p_analyze.Enabled == true ? gdv_permissao.Rows[i].Cells[6].Text != (chk_p_analyze.Checked == true ? "S" : "N") ? CAIOPS.GravaPermissao(Int32.Parse(ddl_cod_grup.SelectedValue.ToString()), gdv_permissao.Rows[i].Cells[0].Text, "ANALYZE", chk_p_analyze.Checked == true ? "G" : "R") : "X" : "X";

        CheckBox chk_p_grant = (CheckBox)gdv_permissao.Rows[i].Cells[15].FindControl("chk_p_grant");
        Resultado = chk_p_grant.Enabled == true ? gdv_permissao.Rows[i].Cells[7].Text != (chk_p_grant.Checked == true ? "S" : "N") ? CAIOPS.GravaPermissao(Int32.Parse(ddl_cod_grup.SelectedValue.ToString()), gdv_permissao.Rows[i].Cells[0].Text, "GRANT", chk_p_grant.Checked == true ? "G" : "R") : "X" : "X";

        CheckBox chk_p_revoke = (CheckBox)gdv_permissao.Rows[i].Cells[16].FindControl("chk_p_revoke");
        Resultado = chk_p_revoke.Enabled == true ? gdv_permissao.Rows[i].Cells[8].Text != (chk_p_revoke.Checked == true ? "S" : "N") ? CAIOPS.GravaPermissao(Int32.Parse(ddl_cod_grup.SelectedValue.ToString()), gdv_permissao.Rows[i].Cells[0].Text, "REVOKE", chk_p_revoke.Checked == true ? "G" : "R") : "X" : "X";
    }

    protected void ibtn_salvar_Command(object sender, CommandEventArgs e)
    {
        if (e.CommandName == "Salvar")
        {
            Int32 i = Int32.Parse(e.CommandArgument.ToString());

            SalvarPermissao(i);

            LabelMensagem(lbl_mensagem_permissao, "Permissão atualizada com sucesso");

            Popula_gdv_permissao(Int32.Parse(ddl_cod_grup.SelectedValue));
        }
    }

    protected void PopulaTabAtiva(Int32 TabIndex)
    {
        switch (TabIndex)
        {
            //Grupos
            case 0:
                Popula_lsb_grupo();
                Popula_ddl_cod_schm();
                break;

            //Usuários
            case 1:
                Popula_lsb_usuario();
                break;

            //Permissões
            case 2:
                PopulaDDL.dsResultado("PACK_APP_POPULA_LSB.PROC_APP_POPULA_DDL_COD_GRUP", ddl_cod_grup, "COD_GRUP", "NOME_GRUP", null);
                ddl_cod_grup.SelectedValue = hdf_cod_grup.Value;
                if (hdf_cod_grup.Value != "0")
                {
                    Popula_gdv_permissao(Int32.Parse(hdf_cod_grup.Value));
                }
                break;

            //Log
            case 3:
                PopulaDDL.dsResultado("PACK_APP_POPULA_LSB.PROC_APP_POPULA_DDL_COD_SCHM", ddl_cod_schm_pesq, "COD_SCHM", "NOME_SCHM", null);
                PopulaDDL.dsResultado("PACK_APP_POPULA_LSB.PROC_APP_POPULA_DDL_NOME_LOGN", ddl_cod_usua, "NOME_LOGN", "NOME_USUA", null);

                //clx_dat_inicio.SelectedDate = DateTime.Now;
                break;
        }
    }

    protected void ibtn_salvar_tudo_Command(object sender, CommandEventArgs e)
    {
        foreach (GridViewRow gvr_permissao in gdv_permissao.Rows)
        {
            SalvarPermissao(gvr_permissao.RowIndex);
        }

        LabelMensagem(lbl_mensagem_permissao, "Permissão atualizada com sucesso");

        Popula_gdv_permissao(Int32.Parse(ddl_cod_grup.SelectedValue));
    }

    protected void LabelMensagem(Label LabelMensagem, String Mensagem)
    {
        LabelMensagem.Text = Mensagem;

        if (LabelMensagem.ForeColor == System.Drawing.Color.Red)
        {
            LabelMensagem.ForeColor = System.Drawing.Color.DarkGreen;
        }
        else
        {
            LabelMensagem.ForeColor = System.Drawing.Color.Red;
        }
    }

    protected void LimparTudo()
    {
        AjaxControlToolkit.TabContainer container = (AjaxControlToolkit.TabContainer)tb_cai;

        foreach (object obj in container.Controls)
        {
            if (obj is AjaxControlToolkit.TabPanel)
            {
                AjaxControlToolkit.TabPanel tabPanel = (AjaxControlToolkit.TabPanel)obj;

                foreach (object ctrl in tabPanel.Controls)
                {
                    if (ctrl is Control)
                    {
                        Control c = (Control)ctrl;

                        foreach (object innerCtrl in c.Controls)
                        {
                            //RadioButtonList
                            if (innerCtrl is RadioButtonList)
                                (innerCtrl as RadioButtonList).ClearSelection();

                            //ListBox
                            if (innerCtrl is ListBox)
                                (innerCtrl as ListBox).Items.Clear();

                            //DropDownList
                            if (innerCtrl is DropDownList)
                                (innerCtrl as DropDownList).Items.Clear();

                            //TextBox
                            if (innerCtrl is TextBox)
                                (innerCtrl as TextBox).Text = "";

                            //Label
                            if (innerCtrl is Label)
                                (innerCtrl as Label).Text = "";

                            //HiddenField
                            if (innerCtrl is HiddenField)
                                (innerCtrl as HiddenField).Value = "0";

                            //GridView
                            if (innerCtrl is GridView)
                            {
                                (innerCtrl as GridView).DataSource = null;
                                (innerCtrl as GridView).DataBind();
                            }
                        }
                    }
                }
            }
        }
    }
}